# -*- codeing = utf-8 -*-
# @Time : 2021/2/27 16:28
# @Atuthor: 朱朱
# @File: 137pickle模块的使用.py
# @Software: PyCharm
""
"""
# python 里存入数据只支持存入 字符串 和 二进制
# json: 将Python里的数据(str/list/tuple/dict/int/float/bool/None)
        等转换成为对应的json
# pickle: 将Python里任意的对象转换成为二进制

# 序列化   dumps:将Python数据转换成为二进制
#         dump:将Python数据转换成为二进制，同时保存到指定文件
# 反序列化 loads:将二进制加载成为Python数据
#         load:读取文件，并将文件的二进制内容加载成为Python数据
"""
import pickle

names = ['jack','tony','tom','luck']
p1 = pickle.dumps(names) # 将数据转换为二进制
print(p1) # b'\x80\x03]q\x00......'

p2 = open('pnames.txt', 'wb') # 以二进制写,打开文件
p2.write(p1)
p2.close()
print('---------------------------')

p3 = open('pnames.txt', 'rb') # 以二进制打开
p4 = p3.read(1024)
p5 = pickle.loads(p4)
print(p5)
p3.close()
print('-------------------------')

f6 = open('p6names.txt', 'wb')
pickle.dump(names,f6)
f6.close()

f7 = open('p6names.txt','rb')
p7 = pickle.load(f7)
print(p7)

class Dog(object):
    def __init__(self, name, color):
        self.name = name
        self.color = color

    def eat(self):
        print(self.name + '正在吃东西............')

d = Dog('jack','red')
# 保存到文件里
pickle.dump(d,open('dog.txt','wb'))

# 从文件里加载出来
pd = pickle.load(open('dog.txt','rb'))
pd.eat()
print(pd.name, pd.color)
